package com.vxdata.utils.modules.word.freemarker.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.vxdata.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * <p>
 * API表
 * </p>
 *
 * @author james
 * @since 2020-09-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class DatacenterApiResource extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * API ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 所属分类ID
     */
    private Long catalogId;

    /**
     * 祖先id
     */
    private String ancestorId;

    /**
     * api创建类型 注：0向导模式 1脚本模式 2开发者模式
     */
    private Integer model;

    /**
     * API标题
     */
    private String title;

    /**
     * 显示顺序
     */
    private Integer orderNum;

    /**
     * api路径
     */
    private String url;

    /**
     * 转发url
     */
    private String forwardUrl;

    /**
     * 转发类型 BASE-基本 DD-滴滴 HK-海康  YDP-诱导屏
     */
    private String forwardType;

    /**
     * 协议，http /https
     */
    private String protocol;

    /**
     * 标签
     */
    private String label;

    /**
     * 请求方式
     */
    private String requestMethod;

    /**
     * 返回格式
     */
    private String responseFormat;

    /**
     * 请求参数描述,json格式
     */
    private String requestParam;

    /**
     * 请求参数描述,json格式
     */
    private String responseParam;

    /**
     * 数据源id
     */
    @NotNull(message = "datasourceId不能为null")
    private Long datasourceId;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 数据部门id
     */
    private Long deptId;

    /**
     * 查询语句
     */
    private String querySql;

    /**
     * api描述
     */
    private String memo;

    /**
     * 共享状态
     */
    private Integer shareStatus;

    /**
     * 是否被删除
     */
    private Integer delFlag;

    /**
     * 多表关联
     */
    private String joinInfo;

    /**
     * 请求内容类型
     */
    private String contentType;

    /**
     * 变量表名，如果表名是变量的时候用
     */
    private String varTableName;

    /**
     * 共享资源的id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long categoryId;

    /**
     * 分类参数
     */

    private String categoryParams;

    /**
     * 资源分类
     */
    private int resourceType;
    /**
     * 请求次数限制
     */
    private Integer reqLimit;
    /**
     * 时间间隔秒
     */
    private Integer reqDuration;

    /**
     * 服务编排ID
     */
    private Long soAggId;
    /**
     * api服务类型 0-默认普通api 1-生成csv文件api 2-普通接口+csv文件
     */
    private Integer apiType;
    /**
     * csv文件api时参数配置
     *{"full_cron":"全量文件产生","increment_cron":"增量文件","sortField":"排序字段","timeField":"时间戳字段","lifeDays":"文件生命周期"}
     */
    private String fileSettings;
}
